package com.example.common;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 封装分页数据
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Page<T> {
    /**
     * 当前第几页
     */
    private Integer currentPage;
    /**
     * 每页数据量
     */
    private Integer pageSize = 10;
    /**
     * 总数据量
     */
    private Integer totalCount; // 设它的时候？pageSize有了，就可以计算totalPage
    /**
     * 总页数
     */
    private Integer totalPage;
    /**
     * 存前端可填的查询条件
     */
    private Map<String, Object> params = new HashMap<>();
    /**
     * 表格需要的集合数据
     */
    private List<T> data;

    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
        // 同时计算totalPage，根据totalCount和pageSize
        // 总数量：1，每页多少条：10，总页数：1（1 / 10 + 1）
        // 总数量：10，每页多少条：10，总页数：1（10 / 10 + 0）
        // 总数量：11，每页多少条：10，总页数：2（11 / 10 + 1）
        // 总数量：20，每页多少条：10，总页数：2（20 / 10 + 0）
        int totalPage = totalCount / pageSize +
                (totalCount % pageSize == 0 ? 0 : 1);
        setTotalPage(totalPage);
    }
}
